iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
1
自我挑戰組

今年我想陪著 30 天系列 第 19

今年我想陪著 30 天之 19

  • 分享至 

  • xImage
  •  

1266. Minimum Time Visiting All Points

On a plane there are n points with integer coordinates points[i] = [xi, yi]. Your task is to find the minimum time in seconds to visit all points.
You can move according to the next rules:
(1) In one second always you can either move vertically, horizontally by one unit or diagonally (it means to move one unit vertically and one unit horizontally in one second).
(2) You have to visit the points in the same order as they appear in the array.

  • Example 1:

    Input: points = [[1,1],[3,4],[-1,0]]
    Output: 7
    Explanation: One optimal path is [1,1] -> [2,2] -> [3,3] -> [3,4] -> [2,3] -> [1,2] -> [0,1] -> [-1,0]
    Time from [1,1] to [3,4] = 3 seconds
    Time from [3,4] to [-1,0] = 4 seconds
    Total time = 7 seconds

  • Example 2:
    Input: points = [[3,2],[-2,2]]
    Output: 5

var minTimeToVisitAllPoints = function(points) {
    let time = 0;
    for(let p in points) {
        if(p == points.length - 1) return time
        
        if(Math.abs(points[p][0] - points[+p + 1][0]) == Math.abs(points[p][1] - points[+p + 1][1])) 
        {
          time += Math.abs(points[p][0] - points[+p + 1][0]); 
          continue;
        }
          
        if(Math.abs(points[p][0] - points[+p + 1][0]) > Math.abs(points[p][1] - points[+p + 1][1])) 
        {
          time += Math.abs(points[p][0] - points[+p + 1][0]);
          continue;
        }
            
        if(Math.abs(points[p][0] - points[+p + 1][0]) < Math.abs(points[p][1] - points[+p + 1][1])) 
        {
          time += Math.abs(points[p][1] - points[+p + 1][1]);
          continue;
        }
    }

    return time
};

Note

  • +p 轉型態

上一篇
今年我想陪著 30 天之 18
下一篇
今年我想陪著 30 天之 20
系列文
今年我想陪著 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言